home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / program / gncdev24.lha / E / sources / AuxProcs.e < prev    next >
Text File  |  1995-09-12  |  5KB  |  200 lines

  1. OPT MODULE
  2. OPT EXPORT
  3.  
  4.  
  5. ->/////////////////////////////////////////////////////////////////////////////
  6. ->//////////////////////////////////////////////////// PROC error_request /////
  7. ->/////////////////////////////////////////////////////////////////////////////
  8. PROC error_request( text_body : PTR TO CHAR ) RETURN EasyRequestArgs(    NIL ,
  9.                                                                         [ 20 , 0 , 'GenCodeE error' , text_body , 'OK' ] ,
  10.                                                                         NIL , NIL )
  11.  
  12.  
  13. ->/////////////////////////////////////////////////////////////////////////////
  14. ->////////////////////////////////////////////////////// PROC indent_defs /////
  15. ->/////////////////////////////////////////////////////////////////////////////
  16. PROC indent_defs( file , ident : PTR TO CHAR , ident_length_max )
  17.  
  18.     DEF i
  19.  
  20.     FOR i := 0 TO ( ident_length_max - EstrLen( ident ) ) DO FputC( file , " " )
  21.  
  22. ENDPROC
  23.  
  24.  
  25. ->/////////////////////////////////////////////////////////////////////////////
  26. ->////////////////////////////////////////////////////// PROC indent_code /////
  27. ->/////////////////////////////////////////////////////////////////////////////
  28. PROC indent_code( file , indent_level , return )
  29.  
  30.     DEF i
  31.  
  32.     IF return THEN FOR i := 1 TO indent_level DO FputC( file , "\t" )
  33.  
  34. ENDPROC
  35.  
  36.  
  37. ->/////////////////////////////////////////////////////////////////////////////
  38. ->/////////////////////////////////////////////////// PROC string_convert /////
  39. ->/////////////////////////////////////////////////////////////////////////////
  40. PROC string_convert ( raw_string : PTR TO CHAR )
  41.  
  42.     DEF converted_string1 : PTR TO CHAR
  43.     DEF converted_string2 : PTR TO CHAR
  44.     DEF aux_string : PTR TO CHAR
  45.     DEF v2_vs_v1 = FALSE , char , char_value
  46.     DEF str_pos = 0 , offset = 0
  47.  
  48.     converted_string1 := String( ( StrLen( raw_string ) * 2 ) + 2 )
  49.     StringF( converted_string1 , '\a\s\a' , raw_string )
  50.  
  51.     IF ( InStr( raw_string , '\\' , 0 ) <> -1 ) OR ( InStr( raw_string , '\a' , 0 ) <> -1 )
  52.  
  53.         aux_string := String( StrLen( raw_string ) + 2 )
  54.         converted_string2 := String ( StrLen( raw_string ) * 4 + 8 )
  55.         StrAdd( converted_string2 , '[' , 1 )
  56.  
  57.         WHILE ( char := raw_string[ str_pos++ ] )
  58.  
  59.             IF char = "\\"
  60.  
  61.                 char := raw_string[ str_pos++ ]
  62.  
  63.                 SELECT char
  64.  
  65.                     CASE "r"
  66.  
  67.                         StrAdd( converted_string2 , '13,' , ALL )
  68.                         converted_string1[ str_pos + offset ] := "b"
  69.  
  70.                     CASE "n"
  71.  
  72.                         StrAdd( converted_string2 , '10,' , ALL )
  73.  
  74.                     CASE "t"
  75.  
  76.                         StrAdd( converted_string2 , '9,' , ALL )
  77.  
  78.                     CASE "e"
  79.  
  80.                         StrAdd( converted_string2 , '27,' , ALL )
  81.  
  82.                     CASE "0"
  83.  
  84.                         IF raw_string[ str_pos ]
  85.  
  86.                             char_value := raw_string[ str_pos++ ] - "0"
  87.  
  88.                             IF raw_string[ str_pos ]
  89.  
  90.                                 char_value := char_value * 8 + ( raw_string[ str_pos++ ] - "0" )
  91.                                 StringF( converted_string2 , '\s\d,' , converted_string2 , char_value )
  92.  
  93.                                 IF char_value = 27
  94.  
  95.                                     MidStr( aux_string , raw_string , str_pos , ALL )
  96.                                     SetStr( converted_string1 , str_pos + offset - 3 )
  97.                                     StringF( converted_string1 , '\s\\e\s\a' , converted_string1 , aux_string )
  98.                                     offset := offset - 2
  99.  
  100.                                 ELSE
  101.  
  102.                                     v2_vs_v1 := TRUE
  103.  
  104.                                 ENDIF
  105.  
  106.                             ENDIF
  107.  
  108.                         ENDIF
  109.  
  110.                     CASE "x"
  111.  
  112.                         IF raw_string[ str_pos ]
  113.  
  114.                             char := raw_string[ str_pos++ ]
  115.  
  116.                             IF char >= "a"
  117.  
  118.                                 char_value := char - "a" + 10
  119.  
  120.                             ELSEIF char >= "A"
  121.  
  122.                                 char_value := char - "A" + 10
  123.  
  124.                             ELSE
  125.  
  126.                                 char_value := char - "0"
  127.  
  128.                             ENDIF
  129.  
  130.                             IF raw_string[ str_pos ]
  131.  
  132.                                 char := raw_string[ str_pos++ ]
  133.  
  134.                                 IF char>="a"
  135.  
  136.                                     char_value := char_value * 16 + ( char - "a" + 10 )
  137.  
  138.                                 ELSEIF char>="A"
  139.  
  140.                                     char_value := char_value * 16 + ( char - "A" + 10 )
  141.  
  142.                                 ELSE
  143.  
  144.                                     char_value := char_value * 16 + ( char - "0" )
  145.  
  146.                                 ENDIF
  147.  
  148.                                 StringF( converted_string2 , '\s\d,' , converted_string2 , char_value )
  149.  
  150.                                 IF char_value=27
  151.  
  152.                                     MidStr( aux_string , raw_string , str_pos , ALL )
  153.                                     SetStr( converted_string1 , str_pos + offset - 3 )
  154.                                     StringF( converted_string1 , '\s\\e\s\a' , converted_string1 , aux_string )
  155.                                     offset := offset - 2
  156.  
  157.                                 ELSE
  158.  
  159.                                     v2_vs_v1 := TRUE
  160.  
  161.                                 ENDIF
  162.  
  163.                             ENDIF
  164.  
  165.                         ENDIF
  166.  
  167.                     CASE 0
  168.  
  169.                         StrAdd( converted_string2 , '"\\",' , ALL )
  170.                         DEC str_pos
  171.  
  172.                     DEFAULT
  173.  
  174.                         StringF( converted_string2 , '\s"\c",' , converted_string2 , char )
  175.  
  176.                 ENDSELECT
  177.  
  178.             ELSEIF char="'"
  179.  
  180.                 StrAdd( converted_string2 , '"\a",', ALL )
  181.  
  182.                 MidStr( aux_string , raw_string , str_pos , ALL )
  183.                 SetStr( converted_string1 , str_pos + offset )
  184.                 StringF( converted_string1 , '\s\a\a\s\a' , converted_string1 , aux_string )
  185.                 INC offset
  186.  
  187.             ELSE
  188.  
  189.                 StringF( converted_string2 , '\s"\c",' , converted_string2 , char )
  190.  
  191.             ENDIF
  192.  
  193.         ENDWHILE
  194.  
  195.         StrAdd( converted_string2 , '0]:CHAR' , ALL )
  196.  
  197.     ENDIF
  198.  
  199. ENDPROC IF v2_vs_v1 THEN converted_string2 ELSE converted_string1
  200.